broadway: Fix some window coordinate reporting issues
authorAlexander Larsson <alexl@redhat.com>
Mon, 14 Mar 2011 10:22:12 +0000 (11:22 +0100)
committerAlexander Larsson <alexl@redhat.com>
Mon, 14 Mar 2011 10:28:57 +0000 (11:28 +0100)
gdk/broadway/gdkwindow-broadway.c

index 9690411a567d59d37d84560aa921acb9fc4495fa..3a722efd9765651941daab688320fa1abf5d4414 100644 (file)
@@ -812,19 +812,40 @@ gdk_window_broadway_get_geometry (GdkWindow *window,
                                  gint      *width,
                                  gint      *height)
 {
+  GdkWindowImplBroadway *impl;
+
+  g_return_val_if_fail (GDK_IS_WINDOW (window), NULL);
+
+  impl = GDK_WINDOW_IMPL_BROADWAY (window->impl);
+
+  /* TODO: These should really roundtrip to the client to get the current data */
+
+  if (x)
+    *x = impl->wrapper->x;
+  if (y)
+    *y = impl->wrapper->y;
+  if (width)
+    *width = impl->wrapper->width;
+  if (height)
+    *height = impl->wrapper->height;
+
 }
 
 static gint
 gdk_window_broadway_get_root_coords (GdkWindow *window,
-                               gint       x,
-                               gint       y,
-                               gint      *root_x,
-                               gint      *root_y)
+                                    gint       x,
+                                    gint       y,
+                                    gint      *root_x,
+                                    gint      *root_y)
 {
+  GdkWindowImplBroadway *impl;
+
+  impl = GDK_WINDOW_IMPL_BROADWAY (window->impl);
+
   if (root_x)
-    *root_x = x;
+    *root_x = x + impl->wrapper->x;
   if (root_y)
-    *root_y = y;
+    *root_y = y + impl->wrapper->y;
 
   return 1;
 }
@@ -834,11 +855,17 @@ gdk_broadway_window_get_root_origin (GdkWindow *window,
                                     gint      *x,
                                     gint      *y)
 {
+  GdkWindowImplBroadway *impl;
+
+  impl = GDK_WINDOW_IMPL_BROADWAY (window->impl);
+
+  /* TODO: This should take wm frame into account */
+
   if (x)
-    *x = 0;
+    *x = impl->wrapper->x;
 
   if (y)
-    *y = 0;
+    *y = impl->wrapper->x;
 }
 
 static void
@@ -847,6 +874,8 @@ gdk_broadway_window_get_frame_extents (GdkWindow    *window,
 {
   g_return_if_fail (rect != NULL);
 
+  /* TODO: This should take wm frame into account */
+
   rect->x = window->x;
   rect->y = window->y;
   rect->width = window->width;